
#ifndef __Constants_h_
#define __Constants_h_

#define ST_MENUON 0;
#define ST_MENUOFF 1;
#define ST_NOACTION 10;
#define ST_ADDING 11;
#define ST_SELECTING 12;
#define ST_EDIT 13;
#define ST_MOVINGMOUSE 90;
#define ST_STATICMOUSE 91;
#define ST_MOVINGCAMERA 80;
#define ST_STATICCAMERA 81;
#define ST_EXIT 100;

class Constants
{
private:

	int state;
	int mouseState;
	int cameraState;
	int actionState;
	int num;
	bool quit;
	std::string skyBox;
	static Constants *constants;

	Constants(){
		state=ST_MENUON;
		mouseState=ST_MOVINGMOUSE;
		cameraState=ST_STATICCAMERA;
		actionState=ST_NOACTION;
		quit=false;
		num=0;
		skyBox="Examples/MorningSkyBox";
	}

public: 

	~Constants(){
	}

	static Constants* instance(){

		static Constants constants;

		return & constants;
	}

	int getState(){
		return state;
	}

	int getMouseState(){
		return mouseState;
	}

	int getCameraState(){
		return cameraState;
	}

	int getActionState(){
		return actionState;
	}

	void setState(int st){
		state = st;
	}

	void setMouseState(int st){
		mouseState = st;
	}

	void setCameraState(int st){
		cameraState = st;
	}

	void setActionState(int st){
		actionState = st;
	}

	bool isEnd(){
		return quit;
	}
	
	void setEnd(){
		quit=true;
	}

	int getNum(){
		
		return ++num;
	}

	std::string getSkyBoxName(){
		return skyBox;
	}
	/*
	void toggleState(){

		int stedit=ST_EDIT;
		if(state==stedit){
			state = ST_MENU;
		}
		else
			state = ST_EDIT;
	}*/

};
#endif 